home *** CD-ROM | disk | FTP | other *** search
- <SCRIPT LANGUAGE="JavaScript">
-
-
- <!--
-
- // set messages (specify backslash in double form (i.e, \\)
- var messages = new Array()
- messages[0] = "welcome to my page"
- messages[1] = "cool led sign eh"
- messages[2] = "you can add a lot.."
- messages[3] = "of messages to this."
-
-
- // number of milliseconds to pause between two messages
- var pause = 3000
-
- // set normal spacing between two characters (no whitespace inbetween)
- var space = 1
-
- // set height width of each character
- var height = 5
- var width = 3
-
- // create object of all supported characters in font
- var letters = new letterArray()
-
- // initialize image variables
- var on = new Image(5, 5)
- var off = new Image(5, 5)
-
- // set image URLs
- on.src = "on.gif"
- off.src = "off.gif"
-
- // get number of images already laid out in page
- var imageNum = document.images.length
-
- // compute width of board
- //var boardWidth = longest * (width + space) - space
-
- // set maximum message length in images
- var boardWidth = 0
- for (var i = 0; i < messages.length; ++i) {
- var lengthWithNoSpaces = messages[i].split(" ").join("").length
- var numberOfSpaces = messages[i].length - lengthWithNoSpaces
- var currentBoardWidth = lengthWithNoSpaces * (width + space) - space + numberOfSpaces * space * 2
- if (boardWidth < currentBoardWidth)
- boardWidth = currentBoardWidth
- }
-
- // sign is currently not running
- var running = false
- var timerID = null
-
- function letterArray() {
- this.a = new Array(height)
- this.a[0] = " * "
- this.a[1] = "* *"
- this.a[2] = "***"
- this.a[3] = "* *"
- this.a[4] = "* *"
-
- this.b = new Array(height)
- this.b[0] = "** "
- this.b[1] = "* *"
- this.b[2] = "** "
- this.b[3] = "* *"
- this.b[4] = "** "
-
- this.c = new Array(height)
- this.c[0] = "***"
- this.c[1] = "* "
- this.c[2] = "* "
- this.c[3] = "* "
- this.c[4] = "***"
-
- this.d = new Array(height)
- this.d[0] = "** "
- this.d[1] = "* *"
- this.d[2] = "* *"
- this.d[3] = "* *"
- this.d[4] = "** "
-
- this.e = new Array(height)
- this.e[0] = "*** "
- this.e[1] = "* "
- this.e[2] = "***"
- this.e[3] = "* "
- this.e[4] = "***"
-
- this.f = new Array(height)
- this.f[0] = "***"
- this.f[1] = "* "
- this.f[2] = "***"
- this.f[3] = "* "
- this.f[4] = "* "
-
- this.g = new Array(height)
- this.g[0] = "***"
- this.g[1] = "* "
- this.g[2] = "***"
- this.g[3] = "* *"
- this.g[4] = "***"
-
- this.h = new Array(height)
- this.h[0] = "* *"
- this.h[1] = "* *"
- this.h[2] = "***"
- this.h[3] = "* *"
- this.h[4] = "* *"
-
- this.i = new Array(height)
- this.i[0] = "***"
- this.i[1] = " * "
- this.i[2] = " * "
- this.i[3] = " * "
- this.i[4] = "***"
-
- this.j = new Array(height)
- this.j[0] = " *"
- this.j[1] = " *"
- this.j[2] = " *"
- this.j[3] = "* *"
- this.j[4] = "***"
-
- this.k = new Array(height)
- this.k[0] = "* *"
- this.k[1] = "* *"
- this.k[2] = "** "
- this.k[3] = "* *"
- this.k[4] = "* *"
-
- this.l = new Array(height)
- this.l[0] = "* "
- this.l[1] = "* "
- this.l[2] = "* "
- this.l[3] = "* "
- this.l[4] = "***"
-
- this.m = new Array(height)
- this.m[0] = "* *"
- this.m[1] = "***"
- this.m[2] = "***"
- this.m[3] = "* *"
- this.m[4] = "* *"
-
- this.n = new Array(height)
- this.n[0] = "* *"
- this.n[1] = "***"
- this.n[2] = "***"
- this.n[3] = "***"
- this.n[4] = "* *"
-
- this.o = new Array(height)
- this.o[0] = "***"
- this.o[1] = "* *"
- this.o[2] = "* *"
- this.o[3] = "* *"
- this.o[4] = "***"
-
- this.p = new Array(height)
- this.p[0] = "** "
- this.p[1] = "* *"
- this.p[2] = "** "
- this.p[3] = "* "
- this.p[4] = "* "
-
- this.q = new Array(height)
- this.q[0] = "***"
- this.q[1] = "* *"
- this.q[2] = "* *"
- this.q[3] = "***"
- this.q[4] = "***"
-
- this.r = new Array(height)
- this.r[0] = "** "
- this.r[1] = "* *"
- this.r[2] = "** "
- this.r[3] = "* *"
- this.r[4] = "* *"
-
- this.s = new Array(height)
- this.s[0] = "***"
- this.s[1] = "* "
- this.s[2] = "***"
- this.s[3] = " *"
- this.s[4] = "***"
-
- this.t = new Array(height)
- this.t[0] = "***"
- this.t[1] = " * "
- this.t[2] = " * "
- this.t[3] = " * "
- this.t[4] = " * "
-
- this.u = new Array(height)
- this.u[0] = "* *"
- this.u[1] = "* *"
- this.u[2] = "* *"
- this.u[3] = "* *"
- this.u[4] = "***"
-
- this.v = new Array(height)
- this.v[0] = "* *"
- this.v[1] = "* *"
- this.v[2] = "* *"
- this.v[3] = "* *"
- this.v[4] = " * "
-
- this.w = new Array(height)
- this.w[0] = "* *"
- this.w[1] = "* *"
- this.w[2] = "***"
- this.w[3] = "***"
- this.w[4] = "***"
-
- this.x = new Array(height)
- this.x[0] = "* *"
- this.x[1] = "* *"
- this.x[2] = " * "
- this.x[3] = "* *"
- this.x[4] = "* *"
-
- this.y = new Array(height)
- this.y[0] = "* *"
- this.y[1] = "* *"
- this.y[2] = "***"
- this.y[3] = " * "
- this.y[4] = " * "
-
- this.z = new Array(height)
- this.z[0] = "***"
- this.z[1] = " *"
- this.z[2] = " * "
- this.z[3] = "* "
- this.z[4] = "***"
-
- this['!'] = new Array(height)
- this['!'][0] = " * "
- this['!'][1] = " * "
- this['!'][2] = " * "
- this['!'][3] = " "
- this['!'][4] = " * "
-
- this[':'] = new Array(height)
- this[':'][0] = " "
- this[':'][1] = " * "
- this[':'][2] = " "
- this[':'][3] = " * "
- this[':'][4] = " "
-
- this['.'] = new Array(height)
- this['.'][0] = " "
- this['.'][1] = " "
- this['.'][2] = " "
- this['.'][3] = " "
- this['.'][4] = " * "
-
- this['='] = new Array(height)
- this['='][0] = " "
- this['='][1] = "***"
- this['='][2] = " "
- this['='][3] = "***"
- this['='][4] = " "
-
- this['='] = new Array(height)
- this['='][0] = " "
- this['='][1] = "***"
- this['='][2] = " "
- this['='][3] = "***"
- this['='][4] = " "
-
- this['+'] = new Array(height)
- this['+'][0] = " "
- this['+'][1] = " * "
- this['+'][2] = "***"
- this['+'][3] = " * "
- this['+'][4] = " "
-
- this['-'] = new Array(height)
- this['-'][0] = " "
- this['-'][1] = " "
- this['-'][2] = "***"
- this['-'][3] = " "
- this['-'][4] = " "
-
- this['/'] = new Array(height)
- this['/'][0] = " *"
- this['/'][1] = " *"
- this['/'][2] = " * "
- this['/'][3] = "* "
- this['/'][4] = "* "
-
- this['\\'] = new Array(height)
- this['\\'][0] = "* "
- this['\\'][1] = "* "
- this['\\'][2] = " * "
- this['\\'][3] = " *"
- this['\\'][4] = " *"
-
- this['\\'] = new Array(height)
- this['\\'][0] = "* "
- this['\\'][1] = "* "
- this['\\'][2] = " * "
- this['\\'][3] = " *"
- this['\\'][4] = " *"
-
- this['"'] = new Array(height)
- this['"'][0] = "* *"
- this['"'][1] = "* *"
- this['"'][2] = "* *"
- this['"'][3] = " "
- this['"'][4] = " "
-
- this["'"] = new Array(height)
- this["'"][0] = " * "
- this["'"][1] = " * "
- this["'"][2] = " * "
- this["'"][3] = " "
- this["'"][4] = " "
-
- this['('] = new Array(height)
- this['('][0] = " *"
- this['('][1] = " * "
- this['('][2] = " * "
- this['('][3] = " * "
- this['('][4] = " *"
-
- this[')'] = new Array(height)
- this[')'][0] = "* "
- this[')'][1] = " * "
- this[')'][2] = " * "
- this[')'][3] = " * "
- this[')'][4] = "* "
-
- this['*'] = new Array(height)
- this['*'][0] = " "
- this['*'][1] = "***"
- this['*'][2] = "***"
- this['*'][3] = "***"
- this['*'][4] = " "
-
- this['?'] = new Array(height)
- this['?'][0] = "** "
- this['?'][1] = " *"
- this['?'][2] = " * "
- this['?'][3] = " "
- this['?'][4] = " * "
-
- this['0'] = new Array(height)
- this['0'][0] = " * "
- this['0'][1] = "* *"
- this['0'][2] = "* *"
- this['0'][3] = "* *"
- this['0'][4] = " * "
-
- this['1'] = new Array(height)
- this['1'][0] = " * "
- this['1'][1] = " * "
- this['1'][2] = " * "
- this['1'][3] = " * "
- this['1'][4] = " * "
-
- this['2'] = new Array(height)
- this['2'][0] = "***"
- this['2'][1] = " *"
- this['2'][2] = "***"
- this['2'][3] = "* "
- this['2'][4] = "***"
-
- this['3'] = new Array(height)
- this['3'][0] = "***"
- this['3'][1] = " *"
- this['3'][2] = "***"
- this['3'][3] = " *"
- this['3'][4] = "***"
-
- this['4'] = new Array(height)
- this['4'][0] = "* *"
- this['4'][1] = "* *"
- this['4'][2] = "***"
- this['4'][3] = " *"
- this['4'][4] = " *"
-
- this['5'] = new Array(height)
- this['5'][0] = "***"
- this['5'][1] = "* "
- this['5'][2] = "***"
- this['5'][3] = " *"
- this['5'][4] = "** "
-
- this['6'] = new Array(height)
- this['6'][0] = "** "
- this['6'][1] = "* "
- this['6'][2] = "***"
- this['6'][3] = "* *"
- this['6'][4] = "***"
-
- this['7'] = new Array(height)
- this['7'][0] = "***"
- this['7'][1] = " *"
- this['7'][2] = " * "
- this['7'][3] = "* "
- this['7'][4] = "* "
-
- this['8'] = new Array(height)
- this['8'][0] = "***"
- this['8'][1] = "* *"
- this['8'][2] = "***"
- this['8'][3] = "* *"
- this['8'][4] = "***"
-
- this['9'] = new Array(height)
- this['9'][0] = "***"
- this['9'][1] = "* *"
- this['9'][2] = "***"
- this['9'][3] = " *"
- this['9'][4] = "***"
- }
-
- function drawBlank() {
- // assign greater than symbol to variable
- var gt = unescape("%3e")
-
- document.write('<TABLE BORDER=2 CELLPADDING=8' + gt + '<TR' + gt + '<TD BGCOLOR ALIGN="center" VALIGN="center"' + gt)
-
- // print entire board of off images
- for (var y = 0; y < height; ++y) {
- for (var x = 0; x < boardWidth; ++x) {
- document.write('<IMG SRC="' + off.src + '" HEIGHT=5 WIDTH=5' + gt)
- }
- document.write('<BR' + gt)
- }
- document.write('</TD' + gt + '</TR' + gt + '</TABLE' + gt)
- }
-
- function setLight(state, x, y) {
- // set a specific light in sign to on (true) or off (false)
- if (state)
- document.images[computeIndex(x, y)].src = on.src
- else
- document.images[computeIndex(x, y)].src = off.src
- }
-
- function drawLetter(letter, startX) {
- // draws a letter at the given x coordinate
- for (var x = 0; x < width; ++x) {
- for (var y = 0; y < height; ++y) {
- setLight(letters[letter][y].charAt(x) == "*", startX + x, y)
- }
- }
- }
-
- function drawSpace(startX) {
- // create a small space between each two characters
- for (var x = 0; x < space; ++x) {
- for (var y = 0; y < height; ++y) {
- setLight(false, startX + x, y)
- }
- }
- }
-
- function computeIndex(x, y) {
- // compute the document index of an image in the sign, based on the x-y coordinates
- return (y * boardWidth + x) + imageNum
- }
-
- function floodBoard(startX) {
- // set all lights from startX to off
- for (var x = startX; x < boardWidth; ++x) {
- for (var y = 0; y < height; ++y) {
- setLight(false, x, y)
- }
- }
- }
-
- function drawMessage(num) {
- // initialize variable to current message
- var text = messages[num]
-
- // initialize two counters (j - current character in message, i - current x coordinate)
- var i = 0
- var j = 0
-
- while (1) {
- if (text.charAt(j) != " ") {
- // draw current letter
- drawLetter(text.charAt(j), i)
-
- // increment i by the constant width of an image
- i += width
- } else {
- // add an extra space (do not advance j yet)
- drawSpace(i)
- i += space
- }
-
- // if j is less that index of last character
- if (j < text.length - 1) {
- drawSpace(i)
- i += space
- } else // j is the index of the last character (lsat character already printed)
- break
-
- // increment j by one because one letter was printed
- ++j
- }
-
- // flood the remaining piece of the sign (turn it off)
- floodBoard(i)
-
- // if message printed this time was not the last one in the array
- if (num < messages.length - 1)
- // val *must* be a global variable for use with the timeout
- val = ++num
- else
- val = 0 // start cycle over again
-
- // recursive call after waiting 3 seconds (some of the time already passed during printing)
- timerID = setTimeout("drawMessage(val)", pause)
- }
-
- function startSign() {
- running = true
-
- // wait 3 seconds and then call function to print first message
- drawMessage(0)
- }
-
- function stopSign() {
- if(running)
- clearTimeout(timerID)
- running = false
- }
-
- // open form
- document.write('<FORM>')
-
- // create initial sign (all sign is off)
- drawBlank()
-
- document.write('<INPUT TYPE="button" VALUE="start" onClick="startSign()">')
- document.write('<INPUT TYPE="button" VALUE="stop" onClick="stopSign(); floodBoard(0)">')
- document.write('</FORM>')
-
- // -->
-
-
- </SCRIPT>